/**
 * 在这里定义和用户相关的路由处理函数，供 /router/user.js 模块进行调用
 */

// 导入数据库操作模块
const db = require('../db/index')
// 密码加密模块
const bcrypt = require('bcryptjs')
// 生成Token字符串的包
const jwt = require('jsonwebtoken')
//导入全局配置文件
const config = require('../config')
// 登录的处理函数
exports.login = (req, res) => {
  const userInfo = req.body
  console.log(userInfo)
  const sql = `select * from t_users where telphone=?`
  db.query(sql, userInfo.telphone, function(err, results){
    // 执行SQL语句失败
   if(err) {
    return res.resMessage(err)
   }
   if(results.length != 1){
    return res.resMessage('账号错误登录失败')
   }
   
  //  密码对比
  const compareResult = bcrypt.compareSync(userInfo.password, results[0].password)
  if(!compareResult){
    return res.resMessage('密码错误登录失败！')
  }
  const user = { ...results[0], password: '', avatar: '' }
  // console.log(user)
  const tokenStr = jwt.sign(user, config.jwtSecretKey, {
     expiresIn: config.expiresIn
  })
    res.send({
      status: 0,
      message: '登录成功！',
      token: 'Bearer ' + tokenStr
    })
  })
}

/*-------------------------------------------------------------------------------*/

// 注册的处理函数
exports.register = (req, res) => {
  const userInfo = req.body
  //判断数据是否合法
  if(!userInfo.telphone || !userInfo.password){
    return res.send({
      status:1,
      message: "用户名或密码不合法"
    })
  }
  //查重
  const sql = `SELECT * from t_users WHERE telphone=?`
  db.query(sql, [userInfo.telphone], function(err, results){
    if(err) {
      return res.send({status: 1, message: err.message})
    };

    if(results.length > 0){
      return res.send({status: 1, message: '用户名被占用'})
    }
    // 对用户的密码,进行 bcrype 加密，返回值是加密之后的密码字符串
    userInfo.password = bcrypt.hashSync(userInfo.password, 10)
    //定义插入
    const sql = `insert into t_users set ?`
    db.query(sql, {telphone: userInfo.telphone, password: userInfo.password},function(err, results){
      //执行SQL语句失败
        if(err){return res.send({status:1, message: err.message})}
    })
    //注册成功
    res.send({status: 0, message: '注册成功！'})
})
}

